/*
  题目描述
    小红所在的班级进行了数学考试，老师请小红同学帮忙进行名次排序和各分数段的人数统计工作。
    现要求如下：
      将 N 名同学的考试成绩放在 A 数组中，各分数段的人数存到 B 数组中：
        成绩为 100 的人数存到 B(1) 中
        成绩为 90 到 99 的人数存到 B(2) 中
        成绩为 80 到 89 的人数存到 B(3) 中
        成绩为 70 到 79 的人数存到 B(4) 中
        成绩为 60 到 69 的人数存到 B(5) 中
        成绩为 60 分以下的人数存到 B(6) 中。
  输入描述
    第一行：为小红所在班级的人数 N (其中 1 <= N <= 30)；
    第二行：为 N 个用 1 个空格隔开的数学分数（其中分数为整数，0 ≤ score ≤ 100）。
  输出描述
    前 N 行：每行一个整数是从高到低排序的数学分数
    最后一行：是 6 个按要求，存放到数组 B(1)-B(6) 中各分数段的人数（各数据之间以1个空格为间隔）。
  样例1
    输入
      10
      93 85 77 68 59 100 43 94 75 82
    输出
      100
      94
      93
      85
      82
      77
      75
      68
      59
      43
      1 2 2 2 1 2
*/

#include <iostream>

using namespace std;

int main() {
    int n;
    int maxn;
    int a, b, c, d, e, f;
    int x;
    int a1[31] = {};
    a = 0;
    b = 0;
    c = 0;
    d = 0;
    e = 0;
    f = 0;

    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> x;
        if (x == 100) {
            a = a + 1;
        } else if (x >= 90 && x < 100) {
            b++;
        } else if (x >= 80 && x <= 89) {
            c = c + 1;
        } else if (x >= 70 && x <= 79) {
            d = d + 1;
        } else if (x >= 60 && x <= 69) {
            e = e + 1;
        } else if (x < 60) {
            f = f + 1;
        }
        a1[i] = x;
    }

    // 使用选择排序的方法, 对a1[1] ~ a1[n]按由大到小的顺序进行排序
    for (int i = 1; i <= n - 1; i++) {
        maxn = i;
        for (int j = i + 1; j <= n; j++) {
            if (a1[j] > a1[maxn]) {
                maxn = j;
            }
        }
        swap(a1[i], a1[maxn]);
    }

    for (int i = 1; i <= n; i++) {
        cout << a1[i] << endl;
    }
    cout << a << " " << b << " " << c << " " << d << " " << e << " " << f;

    return 0;
}